package com.ryskoo.customer.customer.repository;

import com.ryskoo.customer.customer.domain.CustomerPO;
import com.ryskoo.framework.core.bean.QueryMessageDTO;
import com.ryskoo.framework.core.repository.IBasicRepository;

import java.util.List;
import java.util.Map;

/**
 * @author xman
 */
public interface ICustomerRepository extends IBasicRepository<CustomerPO> {

    /**
     * 商户后台 - 冻结/激活 会员
     *
     * @param idList
     * @param activeState
     * @return
     */
    void handleFreeze(List<String> idList, String activeState);

    /**
     * 查询会员的用户名/手机号/编号 是否已存在
     *
     * @param loginName
     * @param entityNo
     * @param uuid
     * @return
     */
    boolean checkLoginNameExist(String loginName, String entityNo, String uuid);

    /**
     * 商户后台 - 查询会员列表（连表查询）
     */
    List<CustomerPO> queryCustomerList(QueryMessageDTO qm, boolean byPage);

    /**
     * 商户后台 - 查询会员数量（连表查询）
     */
    int queryCustomerCount(QueryMessageDTO qm);

    /**
     * 根据商户id查询商户的会员
     *
     * @param queryMessage 统一查询条件 {@link QueryMessageDTO}
     * @param byPage   是否分页
     * @return 信息列表 {@link List}&lt;{@link Map}&lt;{@link String}, {@link Object}&gt&gt;
     */
    List<Map<String, Object>> queryCustomerByVendorId(QueryMessageDTO queryMessage, boolean byPage);

    /**
     * 根据商户id查询商户的会员的总数
     *
     * @param queryMessage 统一查询条件 {@link QueryMessageDTO}
     * @return 商户的会员总数
     */
    int getCustomerCountByVendorId(QueryMessageDTO queryMessage);

    /**
     * 根据时间统计商户的会员数
     * @param date
     * @param vendorUuid
     * @return
     */
    int getCustomerCountByDate(String date,String vendorUuid);
}
